<?php
/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright 2011
 * @license    All rights reserved
 */


/**
 * Classe permettant de gérer les marques et modeles les plus consultées
 */
class statSrv {
    static $root = "C:/Projets/auto2/www/";

    /**
     * Fonction permettant d'inserer les donnees ds la table stat si une marque ou modele est consultée
     * @param object $datas
     * @return object $liste
     *
     */
    public static function ajouter($datas) {

       // instanciation de la factory
        $maFactory = jDao::get("commun~ao_statistique");
        $records   = jDao::createRecord("commun~ao_statistique");

        $records->Stat_Occasion = $datas->Stat_Occasion;
        $records->Stat_Hit      = $datas->Stat_Hit;
        $records->Stat_Date     = $datas->Stat_Date;
        $records->Stat_Ref      = $datas->Stat_Ref;
       
      

        return $maFactory->insert($records);
    }

    /**
     * Fonction permettant de récupérer les stats : marque populaire
    */
    public static function  getStat() {
            
        $sql  = " SELECT count( IdStatistique ) AS nbre, Occas_Marque, Occas_Modele, Marque_Libelle, Occas_AutreMarque, Modele_Libelle, Occas_AutreModele";
        $sql .= " FROM ao_statistique";
        $sql .= " LEFT JOIN ao_voiture_occasion ON IdOccasion = Stat_Ref";
        $sql .= " LEFT JOIN ao_marque ON Occas_Marque = marque_id";
        $sql .= " LEFT JOIN ao_modele ON Occas_Modele = modele_id";
        $sql .= " WHERE Stat_Ref <> ''";
        $sql .= " AND Occas_Marque <> ''";
        $sql .= " AND Occas_Modele <> ''";
        //$sql .= " AND `Stat_Date` >= '".ucwords(strftime("%Y-%m-%d",mktime(0,0,0,date('m'),date('d')-15,date('Y'))))." 00:00:00'"
        $sql .= " GROUP BY Occas_Modele";
        $sql .= " ORDER BY Marque_Libelle , nbre DESC ";
        $sql .= " LIMIT 0, 50" ;

        $cnx = jDb::getConnection();
        $rs     = $cnx->query($sql);

        return $rs->fetchAll();
 
    }

    /**
     * Fonction permettant de récupérer les stats : essai les plus consultés
    */
    public static function  getStatEssai() {
            
        $sql = " SELECT ess_id, ess_zChapeau, ess_zImage, marque_libelle as Marque_Libelle, modele_libelle as Modele_Libelle, ess_iMarqueId as Occas_Marque, ess_iModelId as Occas_Modele "; 
        $sql .= " FROM ao_essais"; 
        $sql .= " LEFT JOIN ao_marque ON marque_id = ess_iMarqueId"; 
        $sql .= " LEFT JOIN ao_modele ON modele_id = ess_iModelId"; 
        $sql .= " WHERE ess_iMarqueId <> '0'"; 
        $sql .= " ORDER BY marque_libelle, ess_stats DESC"; 
        $sql .= " LIMIT 0 , 200 " ;

        $cnx = jDb::getConnection();
        $rs  = $cnx->query($sql);

        return $rs->fetchAll();
 
    }

    
    /**
     * Ecriture dans un fichier texte des marques les plus populaires
     *
     */
    public static function createStatTxt($content, $filename = 'marque_populaire.txt') {
        try {
            $file = fopen(self::$root . PATH_MARQUE_POPULAIRE . $filename, "w+");
            fwrite($file, $content);
            fclose($file);
        } catch (exception $e) {
            die($e->getMessage());
        }
    }

    /**
     * Récupère le contenu des marques les plus populaires
     *
     */
    public function getStatTxt($file = 'marque_populaire.txt') {
        try {
            $filename = self::$root . PATH_MARQUE_POPULAIRE . $file;

            if (file_exists($filename)) {
                $handle = fopen($filename, "r");
                $contents = fread($handle, filesize($filename));
                fclose($handle);

                return $contents;
            }
        } catch (exception $e) {
            die($e->getMessage());
        }
    }

     /**
     * groupe les données par marque
     * @return array
     */
    public static function groupByMarque($datas, $isEssai = false) {
        $result = array();
        $countMarque = 0;
        foreach ($datas as $k=>$item){
            $temp = new stdClass();
            $temp->modeleId  = $item->Occas_Modele;
            $temp->modele    = $item->Modele_Libelle;

            if ($isEssai) {
                $temp->modeleUrl = jUrl::get("essais~FoEssaiRecherche:resultFicheEssai", array('modele'=>$item->Occas_Modele, 'marque'=>$item->Occas_Marque));
            } else {
                $temp->modeleUrl = jUrl::get("recherche~FoRecherche:index", array('modele'=>$item->Occas_Modele, 'marque'=>$item->Occas_Marque));
            }

            $modele [] = $temp;
            if ( (isset($datas[$k+1]->Marque_Libelle) && $datas[$k+1]->Marque_Libelle != $item->Marque_Libelle) || !isset($datas[$k+1]->Marque_Libelle) ) {
                $objet = new stdClass();
                if (isset($item->Occas_Marque)) $objet->Occas_Marque = $item->Occas_Marque;
                $objet->Marque_Libelle = $item->Marque_Libelle;

                if ($isEssai) {
                    $objet->marqueUrl = jUrl::get("essais~FoEssaiParMarque:modelesParMarque", array('idMarque'=>$item->Occas_Marque));
                } else {
                    $objet->marqueUrl = jUrl::get("recherche~FoRecherche:index", array('marque'=>$item->Occas_Marque));
                }

                if (isset($item->nbre)) $objet->nbre = $item->nbre;
                $objet->Modele_Libelle = $modele;

                $result[] = $objet;
                unset($modele);
                $countMarque ++;
                if ($countMarque > 9) {
                    return $result;
                }
            }
        }
        
        return $result;
    }



}
    